package com.platform.usercenter.mapper;

import java.util.List;
import com.platform.usercenter.domain.SysOrganizationRelation;
import org.apache.ibatis.annotations.Param;

/**
 * 组织上下游关系Mapper接口
 *
 * @author platform
 * @date 2024-10-24
 */
public interface SysOrganizationRelationMapper
{
    /**
     * 查询组织上下游关系
     *
     * @param id 组织上下游关系主键
     * @return 组织上下游关系
     */
    public SysOrganizationRelation selectSysOrganizationRelationById(Long id);

    /**
     * 查询组织上下游关系列表
     *
     * @param sysOrganizationRelation 组织上下游关系
     * @return 组织上下游关系集合
     */
    public List<SysOrganizationRelation> selectSysOrganizationRelationList(SysOrganizationRelation sysOrganizationRelation);

    /**
     * 新增组织上下游关系
     *
     * @param sysOrganizationRelation 组织上下游关系
     * @return 结果
     */
    public int insertSysOrganizationRelation(SysOrganizationRelation sysOrganizationRelation);

    /**
     * 修改组织上下游关系
     *
     * @param sysOrganizationRelation 组织上下游关系
     * @return 结果
     */
    public int updateSysOrganizationRelation(SysOrganizationRelation sysOrganizationRelation);
    public int updateSysOrganizationRelationByOrgId(SysOrganizationRelation sysOrganizationRelation);
    public int updateSysOrganizationRelationByParentId(SysOrganizationRelation sysOrganizationRelation);

    /**
     * 删除组织上下游关系
     *
     * @param id 组织上下游关系主键
     * @return 结果
     */
    public int deleteSysOrganizationRelationById(Long id);
    /**
     * 删除组织上下游关系
     *
     * @param id 组织上下游关系主键
     * @return 结果
     */
    public int deleteSysOrganizationRelationByOrgId(Long orgId);

    /**
     * 批量删除组织上下游关系
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysOrganizationRelationByIds(Long[] ids);

    List<Long> selectActualSubordinate(@Param("orgIds") List<Long> orgIds);

    List<Long> selectRelationSubordinate(@Param("orgIds") List<Long> orgIds);
}
